A Context-Sensitive Memory Model for Verification of C/C++ Programs
نویسندگان
چکیده
Verification of low-level C/C++ requires a precise memory model that supports type unions, pointer arithmetic, and casts. We present a new memory model that splits memory into a finite set of disjoint regions based on a pointer analysis. The main contribution is a field-, arrayand context-sensitive pointer analysis tailored to verification. We have implemented our memory model for the LLVM bitcode and used it on a C++ case study and on SV-COMP benchmarks. Our results suggests that our model can reduce verification time by producing a finer-grained partitioning in presence of function calls.
منابع مشابه
Combination Therapy with A1 Receptor Agonist and Vitamin C Improved Working Memory in a Mouse Model of Global Ischemia-Reperfusion
Introduction: Stroke is one of the most important reasons of death. Hence, trials to prevent or lessen the complications originated by stroke are a goal of public health worldwide. The ischemia-reperfusion causes hypoxia, hypoglycemia and incomplete repel of metabolic waste products and leads to accumulation of free radicals triggering neuronal death. The A1 adenosine receptoras an endogenous l...
متن کاملProgram Verification Under Weak Memory Consistency Using Separation Logic
The semantics of concurrent programs is now defined by a weak memory model, determined either by the programming language (e.g., in the case of C/C++11 or Java) or by the hardware architecture (e.g., for assembly and legacy C code). Since most work in concurrent software verification has been developed prior to weak memory consistency, it is natural to ask how these models affect formal reasoni...
متن کاملThe Language Theory of Bounded Context-Switching
Concurrent compositions of recursive programs with finite data are a natural abstraction model for concurrent programs. Since reachability is undecidable for this class, a restricted form of reachability has become popular in the formal verification literature, where the set of states reached within k context-switches, for a fixed small constant k, is explored. In this paper, we consider the la...
متن کاملTechniques for Memory-Efficient Model Checking of C and C++ Code
We present an overview of techniques that, in combination, lead to a memory-efficient implementation of a model checker for LLVM bitcode, suitable for verification of realistic C and C++ programs. As a central component, we present the design of a tree compression scheme and evaluate the implementation in context of explicit-state safety, LTL and untimed-LTL (for timed automata) model checking....
متن کاملThe Verification Grand Challenge and Abstract Interpretation
Interpretation is a theory of approximation of mathematical structures, in particular those involved in the semantic models of computer systems [4,10,11]. Abstract interpretation can be applied to the systematic construction of methods and effective algorithms to approximate undecidable or very complex problems in computer science. The scope of application is rather large e.g. from type inferen...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017